package com.lh.tams.dao;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.lh.tams.controller.qo.CaseQo;
import com.lh.tams.dao.base.HibernateBaseDao;
import com.lh.tams.domain.TamsCommon;
import com.lh.tams.util.DataGridModel;
import com.lh.tams.util.Page;
/**
 * 一般案件处理dao
 * @author liulin
 *
 */
@Repository
public class CommonDao extends HibernateBaseDao{
	
	/**
	 * 根据caseNo查询一般案件
	 * @param caseNo
	 * @return
	 */
	public Page query(String caseNo){
		List<Object> args=new ArrayList<Object>();
		StringBuilder hql=new StringBuilder();
		hql.append("from TamsCommon c where c.caseNo=?");
		args.add(caseNo);
		return super.queryForList(hql.toString(), args.toArray(), 1, 10);
	}
	
	public Page query(DataGridModel dgm,CaseQo caseQo){
		List<Object> args=new ArrayList<Object>();
		StringBuilder hql=new StringBuilder();
		hql.append("from TamsCase t where 1=1");
		if(caseQo.getCaseNo()!=null&&!"".equals(caseQo.getCaseNo())){
			hql.append(" and t.caseNo=?");
			args.add(caseQo.getCaseNo());
		}
		if(caseQo.getAlarmType()!=null&&!"".equals(caseQo.getAlarmType())){
			hql.append(" and t.alarmType=?");
			args.add(caseQo.getAlarmType());
		}
		if(caseQo.getAlarmWay()!=null&&!"".equals(caseQo.getAlarmWay())){
			hql.append(" and t.alarmWay=?");
			args.add(caseQo.getAlarmWay());
		}
		if(caseQo.getDealType()>0){
			hql.append(" and t.dealType=?");
			args.add(caseQo.getDealType());
		}
		if(caseQo.getWaitCheck()){
			hql.append(" and t.checkType<>?");
			args.add(caseQo.getCheckType());
		}
		if(caseQo.getCheckType()>=0){
			hql.append(" and t.checkType=?");
			args.add(caseQo.getCheckType());
		}
		if(caseQo.getAlarmBeginDate()!=null){
			hql.append(" and t.alarmDate>=?");
			args.add(caseQo.getAlarmBeginDate());
		}
		if(caseQo.getAlarmEndDate()!=null){
			hql.append(" and t.alarmDate<=?");
			args.add(caseQo.getAlarmEndDate());
		}
		if(caseQo.getInDept()>0){
			hql.append(" and t.tamsDeptByInDept.idBgt=?");
			args.add(caseQo.getInDept());
		}
		if(caseQo.getInPerson()>0){
			hql.append(" and t.tamsPersonByInPerson.idBgt=?");
			args.add(caseQo.getInPerson());
		}
		if(caseQo.getOutDept()>0){
			hql.append(" and t.tamsDeptByOutDept.idBgt=?");
			args.add(caseQo.getOutDept());
		}
		if(caseQo.getOutPerson()>0){
			hql.append(" and t.tamsPersonByOutPerson.idBgt=?");
			args.add(caseQo.getOutPerson());
		}
		if(caseQo.getAlarmName()!=null&&!"".equals(caseQo.getAlarmName())){
			hql.append(" and t.alarmName like ?");
			args.add("%"+caseQo.getAlarmName()+"%");
		}
		//判断是否排序
		if(dgm.getSort()!=null&&!"".equals(dgm.getSort()))
			hql.append(" order by ").append(dgm.getSort()).append(" ").append(dgm.getOrder());
		return super.queryForList(hql.toString(), args.toArray(), dgm.getPage(), dgm.getRows());
	}
	
	@SuppressWarnings("unchecked")
	public TamsCommon getCaseCommonByNo(String caseNo){
		List<Object> args=new ArrayList<Object>();
		StringBuilder hql=new StringBuilder();
		hql.append("from TamsCommon t where t.caseNo=?");
		args.add(caseNo);
		Page page = super.queryForList(hql.toString(), args.toArray(), 1, 10);
		List<TamsCommon> lists = (List<TamsCommon>)page.getRows();
		if(lists.size()>0){
			return lists.get(0);
		}else{
			return null;
		}
	}

}
